package cn.slg.module.system.service.pk.utils;

import cn.slg.module.system.dal.dataobject.wujiang.WuJiangDO;

import static cn.slg.module.system.service.pk.utils.Show.prepareSkillShow;

/**
 * 准备战法机制
 */
public class PrepareSkill {

    /**
     * 准备战法处理机制，如果战法有准备效果，开头用这个函数
     *
     * @param attacker       发动者
     * @param skillName      战法名
     * @param initiativeRate 战法本身发动概率
     * @return
     */
    public static boolean whetherContain(WuJiangDO attacker, String skillName, Float initiativeRate) {
        // 准备战法处理机制
        // 看准备战法是否包含它
        boolean contain = attacker.getPreparingSkill().contains(skillName);
        if (!contain) {
            // 如果不包含，即之前没有准备发动该战法
            // 基于发动概率,判断是否能够发动
            boolean can = Random.probability(initiativeRate + attacker.getInitiativeSkillRate());
            if (can) {
                // 能够发动，看看有没有可以减少准备回合的状态什么的。
                // TODO 触发：减少准备时间
                // 没有的话，才放入准备战法集合
                attacker.getPreparingSkill().add(skillName);
                prepareSkillShow(attacker, skillName);
            }
        } else {
            // 从准备战法集合中剔除，然后发动
            attacker.getPreparingSkill().remove(skillName);
        }
        return contain;
    }
}
